package fe.pong.tennis.fisica;

import flash.geom.Point;

class Fisica {

	private var _movimientoX: Movimiento;
	private var _movimientoY: Movimiento;

	public function new(gravedad: Float, velocidad: Float, angulo: Float, x: Float, y: Float, tiempo: Float) {
		_movimientoX = new Movimiento(0, velocidad * Math.cos(angulo), x, tiempo);
		_movimientoY = new Movimiento(gravedad, velocidad*Math.sin(angulo), y, tiempo);
	}

	public function getX(tiempo: Float) {
		return _movimientoX.getPosicion(tiempo);
	}

	public function getY(tiempo: Float) {
		return _movimientoY.getPosicion(tiempo);
	}

	public function setX(valor: Float) {
		return _movimientoX.setPosicion(valor);
	}

	public function setY(valor: Float) {
		return _movimientoY.setPosicion(valor);
	}

	public function moverHaciaAbajo() {
		_movimientoY.setVelocidad(Math.abs(_movimientoY.getVelocidad()));
	}

	public function moverHaciaArriba() {
		_movimientoY.setVelocidad(-1 * Math.abs(_movimientoY.getVelocidad()));
	}

	public function moverHaciaDerecha() {
		_movimientoX.setVelocidad(Math.abs(_movimientoX.getVelocidad()));
	}

	public function moverHaciaIzquierda() {
		_movimientoX.setVelocidad(-1 * Math.abs(_movimientoX.getVelocidad()));
	}

	public function recibirGolpe(golpe: Point) {
		var r: Point = new Point(golpe.x + _movimientoX.getVelocidad(), golpe.y - _movimientoY.getVelocidad());
		r.normalize(30);
		_movimientoX.setVelocidad(r.x);
		_movimientoY.setVelocidad(r.y);
	}

}